#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
短视频下载器 - 主启动文件
支持抖音、快手、微密圈等平台的视频和图片下载
"""

import sys
import os
import traceback
from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtCore import Qt
from PySide2.QtGui import QFont

# 添加当前目录到Python路径
current_dir = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, current_dir)

def setup_application():
    """设置应用程序基本配置"""
    # 创建应用程序实例
    app = QApplication(sys.argv)
    
    # 设置应用程序属性
    app.setApplicationName("解析器")
    app.setApplicationVersion("v2.1 Pro")
    app.setOrganizationName("代飞哥工作室")
    
    # 设置默认字体
    font = QFont("Microsoft YaHei UI", 9)
    app.setFont(font)
    
    # 启用高DPI支持
    app.setAttribute(Qt.AA_EnableHighDpiScaling, True)
    app.setAttribute(Qt.AA_UseHighDpiPixmaps, True)
    
    return app

def check_dependencies():
    """检查必要的依赖"""
    required_modules = [
        'PySide2',
        'requests',
        'urllib3'
    ]
    
    missing_modules = []
    for module in required_modules:
        try:
            __import__(module)
        except ImportError:
            missing_modules.append(module)
    
    if missing_modules:
        error_msg = f"缺少必要的依赖模块:\n{', '.join(missing_modules)}\n\n请使用以下命令安装:\npip install {' '.join(missing_modules)}"
        print(f"❌ {error_msg}")
        return False
    
    return True

def main():
    """主函数"""
    try:
        # 检查依赖
        if not check_dependencies():
            input("按回车键退出...")
            return 1
        
        # 设置应用程序
        app = setup_application()
        
        # 导入主窗口
        try:
            from main_window import MainWindow
        except ImportError as e:
            error_msg = f"无法导入主窗口模块: {e}\n请确保所有文件都在正确的位置"
            print(f"❌ {error_msg}")
            # 启动时使用标准消息框，因为自定义消息框还未加载
            QMessageBox.critical(None, "启动错误", error_msg)
            return 1
        
        # 创建主窗口
        try:
            window = MainWindow()
            window.show()
            
            print("✅ 应用程序启动成功!")
            print("🎯 功能: 视频下载、图片下载、批量处理")
            print("🌟 版本: v2.1 Pro")
            
            
        except Exception as e:
            error_msg = f"创建主窗口失败: {e}\n\n详细错误:\n{traceback.format_exc()}"
            print(f"❌ {error_msg}")
            # 启动时使用标准消息框，因为自定义消息框还未加载
            QMessageBox.critical(None, "启动错误", f"创建主窗口失败:\n{str(e)}")
            return 1
        
        # 运行应用程序
        return app.exec_()
        
    except KeyboardInterrupt:
        print("\n👋 用户中断，程序退出")
        return 0
    except Exception as e:
        error_msg = f"程序运行出错: {e}\n\n详细错误:\n{traceback.format_exc()}"
        print(f"❌ {error_msg}")
        try:
            QMessageBox.critical(None, "运行错误", f"程序运行出错:\n{str(e)}")
        except:
            pass
        return 1

if __name__ == "__main__":
    # 设置控制台编码
    if sys.platform == "win32":
        try:
            import locale
            locale.setlocale(locale.LC_ALL, 'Chinese')
        except:
            pass
    
    # 运行主程序
    exit_code = main()
    sys.exit(exit_code)
